package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.ExamWarehouseStudy;
import com.zhijian.medical.entity.vo.request.ExamStartVo;
import com.zhijian.medical.entity.vo.request.ExamWarehouseStudySaveOrUpdateVo;
import com.zhijian.medical.entity.vo.request.ExamWarehouseStudySearchVo;
import com.zhijian.medical.entity.vo.response.ExamDoingVo;
import com.zhijian.medical.entity.vo.response.ExamWarehouseStudyVo;
import com.zhijian.medical.util.Page;

import java.util.List;

/**
 * 学习模块-题库关联关系表 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-04-01 15:01:57
 */
public interface ExamWarehouseStudyService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    ExamWarehouseStudy selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    ExamWarehouseStudyVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 新增
     *
     * @param examWarehouseStudy
     * @return
     */
    Long insert(ExamWarehouseStudy examWarehouseStudy);

    /**
     * 新增
     *
     * @param examWarehouseStudySaveOrUpdateVo
     * @return
     */
    Long insert(ExamWarehouseStudySaveOrUpdateVo examWarehouseStudySaveOrUpdateVo);

    /**
     * 更改
     *
     * @param examWarehouseStudy
     * @return
     */
    boolean update(ExamWarehouseStudy examWarehouseStudy);

    /**
     * 修改
     *
     * @param examWarehouseStudySaveOrUpdateVo
     * @return
     */
    boolean update(ExamWarehouseStudySaveOrUpdateVo examWarehouseStudySaveOrUpdateVo);

    /**
     * 总数
     *
     * @param examWarehouseStudySearchVo
     * @return
     */
    Integer count(ExamWarehouseStudySearchVo examWarehouseStudySearchVo);

    /**
     * 列表
     *
     * @param examWarehouseStudySearchVo
     * @return
     */
    List<ExamWarehouseStudyVo> selectList(ExamWarehouseStudySearchVo examWarehouseStudySearchVo);

    /**
     * 分页查询
     *
     * @param examWarehouseStudySearchVo
     * @return
     */
    Page<ExamWarehouseStudyVo> selectPage(ExamWarehouseStudySearchVo examWarehouseStudySearchVo);

    /**
     * 根据学习id查找数据
     *
     * @param studyId
     * @return
     */
    ExamWarehouseStudyVo selectVoByStudyId(Long studyId);

    /**
     * 开始考核
     *
     * @param examStartVo
     * @return
     */
    ExamDoingVo start(ExamStartVo examStartVo);

    /**
     * 根据学习id查找数据
     *
     * @param studyId
     * @return
     */
    ExamWarehouseStudy selectByStudyId(Long studyId);
}